/*
 * main.c
 *
 *  Created on: 12/09/2011
 *      Author: meax
 */

#include "main.h"

/*******************************************************************/
/*	Variables Globales	*/

int32_t cacheActiva;

//	mutex
pthread_mutex_t mutex_logfile;
pthread_mutex_t mutex_fat;
pthread_mutex_t mutex_cacheVector;
pthread_mutex_t mutex_asin_arch_disco;
pthread_mutex_t mutex_oper_fat;
pthread_mutex_t mutex_cacheDirectorio;
pthread_mutex_t mutex_write;
pthread_mutex_t mutex_cacheFile;

FILE* archivoDisco;

/*******************************************************************/

int main(int argc, char* argv[])
{

	//	archivo disco
	archivoDisco = fopen(ARCHIVO_DISCO, "r+");
	if (archivoDisco == NULL)
		{
		printf("No se pudo abrir el archivo Disco\n");
		return -1;
		}

	/******************************************************************************/
	/********************************	CACHE	***********************************/
	/******************************************************************************/
	cacheActiva = 1;

	if(cacheActiva)
		{
		/*	señal cache	log 														*/
		if (signal(SIGUSR1, treatSignalForCache) == SIG_ERR)
			escribir_logfile(NOMPS, 0, ERROR, "Error al capturar la signal CACHE file");

		establecerTamanioDeLaCache(8);
		inicializarCacheDirectorio();
		}
	/******************************************************************************/
	/******************************************************************************/
	//	Inicializacion de semaforos
	pthread_mutex_init(&mutex_logfile, NULL);
	pthread_mutex_init(&mutex_fat, NULL);
	pthread_mutex_init(&mutex_oper_fat, NULL);
	pthread_mutex_init(&mutex_cacheVector, NULL);
	pthread_mutex_init(&mutex_asin_arch_disco, NULL);
	pthread_mutex_init(&mutex_cacheDirectorio, NULL);
	pthread_mutex_init(&mutex_write, NULL);
	pthread_mutex_init(&mutex_cacheFile, NULL);
	/******************************************************************************/
	/******************************************************************************/

	/******************************************************************************/
	/*	FUSE	*/
	iniciarFuse(argc, argv, 0);
	/******************************************************************************/

	//	mensaje para informar que se baja el proceso, fuse sin no tiene -d no informa nada
	escribir_logfile(NOMPS, 0, INFO, "File System MUERTO");
	fclose(archivoDisco);
	return 0;

}
